package com.devtf_l.app.activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.AnimationDrawable;
import android.net.Uri;
import android.os.Handler;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.webkit.DownloadListener;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;
import butterknife.InjectView;
import butterknife.OnClick;
import com.devtf_l.app.R;
import com.devtf_l.app.base.BaseActivity;
import com.devtf_l.app.views.ScrollerWebView;
import com.devtf_l.app.views.ScrollerWebView.OnScrollListener;
/**
* @desc webview显示的模块均跳转到本处【暂时】
* @author ljh lijunhuayc@sina.com 2015-5-4
*/
public class WebViewActivity extends BaseActivity {
String url = "http://www.devtf.cn";
@InjectView(R.id.toolbar)
Toolbar toolbar;
@InjectView(R.id.webView)
ScrollerWebView mVebView;
@InjectView(R.id.loadingIV)
ImageView loadingIV;
@InjectView(R.id.backIV)
ImageView backIV;
@InjectView(R.id.forwardIV)
ImageView forwardIV;
@InjectView(R.id.invokeIV)
ImageView invokeIV;
@InjectView(R.id.favoriteIV)
ImageView favoriteIV;
@InjectView(R.id.refreshIV)
ImageView refreshIV;
AnimationDrawable ad;
Handler mHandler = new Handler();
@Override
protected int initLayout() {
return R.layout.common_webview_layout;
}
@Override
protected void init() {
setSupportActionBar(toolbar);
getSupportActionBar().setHomeButtonEnabled(true);
url = getIntent().getStringExtra("url");
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
loadWeb();
}
}, 100);
}
private void loadWeb() {
mVebView.loadUrl(url);
mVebView.clearCache(true);
WebSettings webSettings = mVebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setPluginState(PluginState.ON);
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
mVebView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
}
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
getSupportActionBar().setTitle(title);
}
});
mVebView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
loadingIV.setVisibility(View.VISIBLE);
if(null == ad)
ad = (AnimationDrawable) loadingIV.getBackground();
ad.start();
setMenuEnable();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
setMenuEnable();
if(null != ad){
ad.stop();
}
loadingIV.setVisibility(View.GONE);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
mVebView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
});
mVebView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScroll(int l, int t) {
}
});
}
private void setMenuEnable() {
if(mVebView.canGoBack()){
backIV.setEnabled(true);
}else{
backIV.setEnabled(false);
}
if(mVebView.canGoForward()){
forwardIV.setEnabled(true);
}else{
forwardIV.setEnabled(false);
}
}
@Override
protected void initListener() {
}
@OnClick({R.id.backIV, R.id.forwardIV, R.id.refreshIV, R.id.invokeIV, R.id.favoriteIV})
public void onClick(View view) {
switch (view.getId()) {
case R.id.backIV:
if(mVebView.canGoBack()){
mVebView.goBack();
}else{
onBackPressed();
}
break;
case R.id.forwardIV:
mVebView.goForward();
break;
case R.id.invokeIV:
break;
case R.id.favoriteIV:
//收藏逻辑
break;
case R.id.refreshIV:
mVebView.reload();
break;
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
if(mVebView.canGoBack()){
backIV.performClick();
}else{
super.onBackPressed();
}
}
}